package collection;

import java.util.LinkedList;
import java.util.Queue;

/**
 *  队列 java.util.Queue
 *  队列Queue接口继承自Collection.因此队列可以保存一组元素,但是存取元素必须遵循先进先出原则.
 *  FIFO:First Input First Output
 *
 *  常见实现类:LinkedList
 *
 */
public class QueueDemo {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        //offer方法是队列提供的入队操作,将元素添加到队列末尾
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("four");
        queue.offer("five");
        System.out.println(queue);

        //poll方法是出队操作,获取并删除队首元素
        String str = queue.poll();
        System.out.println(str);
        System.out.println(queue);

        //peek方法是引用队首元素,获取后元素还在队列中
        str = queue.peek();
        System.out.println(str);
        System.out.println(queue);

        //由于队列是个集合,因此Collection中的操作都支持
        System.out.println(queue.size());

        /*
            使用迭代器(新循环)遍历列队,元素仍在队列中
         */
        for (String e : queue){
            System.out.println(e);
        }
        System.out.println(queue);

//        for (int i = queue.size();i>0;i--){
//            System.out.println(queue.poll());
//        }
        while (queue.size()>0){
            System.out.println(queue.poll());
        }
        System.out.println(queue);

    }
}
